QRCode(Quick Response Code 快速反應碼)是由日本公司 Denso Wave 的 原昌宏 先生在 1994 年發明的二維條碼技術。這項技術最初是為了在汽車製造過程中高效地追蹤零部件。與傳統的一維條碼相比,QRCode 可以儲存更多資訊,並且可以從任何角度快速掃描。
初期發展(1990年代):
2.普及階段(2000年代):
全球應用(2010年代至今):
QRCode 是一種矩陣型的二維條碼,由黑白兩色的方塊組成,採用 Reed-Solomon 錯誤校正算法,能夠在部分損毀的情況下仍然正確讀取資料。
QRCode 可以編碼數字、字母、二進位資料和漢字等,最大資料容量約為 7089 個數字、4296 個字母或 1817 個漢字。
我們從 Github 上來找 MicroPython 的 QRCode 相關模組,可以找到底下這個專案:
專案是這樣介紹的:
它是從 Python-qrcode 這個模組分支出來的,已經用 MicroPython 語法移植成功。為了運作在執行 MicroPython 這類硬體資源較缺乏的嵌入式設備上,函式庫不是產生圖片,而只是產生 ** bitmap-style matrices(點鎮圖樣式的矩陣)**,會把你的資料編碼成一個 QRCode 的像素矩陣,這樣可以存入到 FrameBuffer 中。
作者對其做了一些改進
程式運作的效果
因此您只要下載專案中的 uQR.oy 檔案,上傳至 WiFiBoy 玩學機 Flash 中的 lib 目錄下,即可引用這個模組來產生 QR-Code
我們利用產出 QR-CODE 的功能,為我們這次的鐵人賽貼文,做個QR-CODE 吧。
from lib.uQR import QRCode
wb.cls()
qr = QRCode()
# qr.add_data('https://www.wifiboy.org')
qr.add_data('https://ithelp.ithome.com.tw/users/20105707/ironman/7110')
matrix = qr.get_matrix()
print(len(matrix))
QR_COLOR = wb.WHITE
BG_COLOR = wb.BLACK
W = 160
H = 128
wb.cls(BG_COLOR)
for y in range(len(matrix)):
for x in range(len(matrix[y])):
color = QR_COLOR if matrix[y][x] else BG_COLOR
wb.pix(x * 2, y * 2, color)
print(x * 1, y * 1 )
wb.box(0, H - 20, W, H, BG_COLOR)
wb.str("QR Code", 5, H - 15, 2, 2)
執行效果: